package cn.com.hhrcw.service.impl;

import cn.com.hhrcw.entity.CvResume;
import cn.com.hhrcw.entity.CvUserEduInfo;
import cn.com.hhrcw.entity.PiInfo;
import cn.com.hhrcw.params.NewResumeParams;
import cn.com.hhrcw.service.AddNewResumeService;
import cn.com.hhrcw.service.ICvResumeService;
import cn.com.hhrcw.service.ICvUserEduInfoService;
import cn.com.hhrcw.service.IPiInfoService;
import cn.hutool.core.date.DateUtil;
import me.zhyd.oauth.utils.UuidUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;

@Service
public class AddNewResumeServiceImpl implements AddNewResumeService {

    @Autowired
    private ICvResumeService resumeService;

    @Autowired
    private IPiInfoService piInfoService;

    @Autowired
    private ICvUserEduInfoService cvUserEduInfoService;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveNewResume(NewResumeParams params,String userId) {
        Date date = DateUtil.date();
        // 1、简历添加
        //String couponId = IdUtil.getSnowflake(0, 0).nextIdStr();
        String resumeId;

        CvResume cvResume = resumeService.getByUserId(userId,0,0,1);
        if(cvResume==null){
            resumeId = UuidUtils.getUUID().substring(0, 32);
            cvResume = new CvResume();
            cvResume.setCreateTime(date);
            cvResume.setCreateBy(userId);
            cvResume.setDelFlag(false);
            cvResume.setUserId(userId);
            cvResume.setResumeName(params.getUsername() + "的附件简历");
            cvResume.setEnclosureId(params.getEnclosureId());
            cvResume.setId(resumeId);
            cvResume.setBrowseCount(0);
            cvResume.setLanType(0);
            cvResume.setType(0);
            cvResume.setResumeType(2);
            cvResume.setAdvantage("无");
            resumeService.save(cvResume);
        }
        else{
            resumeId = cvResume.getId();
            cvResume.setUpdateTime(date);
            cvResume.setUpdateBy(userId);
            cvResume.setEnclosureId(params.getEnclosureId());
            cvResume.setBrowseCount(0);
            cvResume.setResumeType(2);
            cvResume.setAdvantage("无");
            resumeService.updateById(cvResume);
        }

        // 2、基本信息添加,基本信息保持一条
        PiInfo piInfo = piInfoService.getById(userId);
        if(piInfo == null){
            String piInfoId = UuidUtils.getUUID().substring(0, 32);
            piInfo = new PiInfo();
            piInfo.setDelFlag(false);
            piInfo.setCreateTime(date);
            piInfo.setCreateBy(userId);
            piInfo.setName(params.getName());
            piInfo.setSex(params.getSex());
            piInfo.setPhone(params.getPhone());
            piInfo.setBirthday(params.getBirthday());
            piInfo.setHomeTown(params.getHomeTownCode());
            piInfo.setUsername(params.getUsername());
            piInfo.setUserId(userId);
            piInfo.setBanFlag(false);
            piInfo.setRoleType("0");
            piInfo.setId(piInfoId);
            piInfoService.save(piInfo);
        }
        else{
            piInfo.setName(params.getName());
            piInfo.setSex(params.getSex());
            piInfo.setPhone(params.getPhone());
            piInfo.setBirthday(params.getBirthday());
            piInfo.setHomeTown(params.getHomeTownCode());
            piInfo.setUsername(params.getUsername());
            piInfo.setUpdateBy(userId);
            piInfo.setUpdateTime(date);
            piInfoService.updateById(piInfo);
        }


        // 4、教育经历添加
        CvUserEduInfo cvUserEduInfo = new CvUserEduInfo();
        cvUserEduInfo.setDelFlag(false);
        cvUserEduInfo.setCreateTime(date);
        cvUserEduInfo.setCreateBy(userId);
        cvUserEduInfo.setEduLevel(params.getEduLevel());
        cvUserEduInfo.setR1(params.getR1());
        cvUserEduInfo.setSchoolName(params.getSchoolName());
        cvUserEduInfo.setEndEduTime(params.getEndEduTime());
        cvUserEduInfo.setStartEduTime(params.getStartEduTime());
        cvUserEduInfo.setMajor(params.getMajor());
        cvUserEduInfo.setResumeId(cvResume.getId());
        cvUserEduInfo.setId(resumeId);
        cvUserEduInfo.setUserId(userId);
        cvUserEduInfoService.save(cvUserEduInfo);
    }
}
